﻿// ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include "windows.h"
#include <tlhelp32.h>
#include<string.h>
#include <stdlib.h>
using namespace std;

void eask()
{
	HANDLE hprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (hprocess == INVALID_HANDLE_VALUE)
	{
		return;
	}
	//2获得表头
	PROCESSENTRY32 pe = { sizeof(PROCESSENTRY32) };
	bool bprocess = Process32First(hprocess, &pe);
	TCHAR szbuf[20] = { 0 };
	while (bprocess)
	{

		//m_ProcessList.InsertItem(0, pe.szExeFile);
		//cout << pe.szExeFile[0] << "        ";
		//printf("%ls----%d\n",pe.szExeFile);

		_itow_s(pe.th32ProcessID, szbuf, sizeof(szbuf) / sizeof(TCHAR), 10);
		//m_ProcessList.SetItemText(0, 1, szbuf);
		//cout << pe.th32ProcessID << "        ";

		_itow_s(pe.cntThreads, szbuf, sizeof(szbuf) / sizeof(TCHAR), 10);
		//m_ProcessList.SetItemText(0, 2, szbuf);
		//cout << pe.cntThreads << endl;
		printf("%ls                  %d                    %d\n", pe.szExeFile, pe.th32ProcessID, pe.cntThreads);


		bprocess = Process32Next(hprocess, &pe);

	}
}

void del(int a) 
{
	int nIndexID = a;
	if (nIndexID == -1)return;
	HANDLE hOpenProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, a);

	if (hOpenProcess)
	{
		TerminateProcess(hOpenProcess, -1);
		cout << "删除成功" << endl;
		//eask();
	}
	else
	{
		cout << "删除失败" << endl;
	}
}

int main()
{
    cout << "欢迎迷你任务管理器--刘亚圣--3160604013--信安1601\n";
	cout << "应用程序              进程id                线程数\n";
	eask();
	int a=0;
	cout << "请输入您要杀死的进程id：";
	cin >> a ;
	del(a);
	system("pause");
	return 0;
}


// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
